package com.imooc.service;

import com.imooc.pojo.Items;
import com.imooc.pojo.ItemsImg;
import com.imooc.pojo.ItemsParam;
import com.imooc.pojo.ItemsSpec;
import com.imooc.utils.PagedResult;
import com.imooc.vo.CommentLevelCountsVo;
import com.imooc.vo.ShopcartVo;

import java.util.List;

public interface ItemService {
    /**
     * 根据商品id 查询详情
     * @param itemId
     * @return
     */
    Items queryItemById(String itemId);

    /**
     * 根据商品id查询商品图片列表
     * @param itemId
     * @return
     */
    List<ItemsImg> queryItemImgList(String itemId);

    /**
     * 根据商品id查询商品规格列表
     * @param itemId
     * @return
     */
    List<ItemsSpec> queryItemSpecList(String itemId);

    /**
     * 根据句商品id查询商品参数
     * @param itemId
     * @return
     */
    ItemsParam queryItemParam(String itemId);

    /**
     * 查询商品评价情况
     * @param itemId
     * @return
     */
    public CommentLevelCountsVo queryCommentCounts(String itemId);


    /**
     * 根据商品id查询商品评价
     * @param itemId
     * @param level
     * @return
     */
    PagedResult queryPagedComments(String itemId, Integer level, int pageNum, int pageSize);

    /**
     * 搜索商品列表
     * @param keyWords
     * @param sort
     * @param pageNum
     * @param pageSize
     * @return
     */
    PagedResult searchItems(String keyWords, String  sort, int pageNum, int pageSize);

    /**
     * 根据三级分类编号查询商品
     * @param catId
     * @param sort
     * @param page
     * @param pageSize
     * @return
     */
    PagedResult searchItemsByThirdCat(Integer catId, String sort, Integer page, Integer pageSize);

    /**
     * 根据规格ids查询最新购物车中商品数据
     * 用户刷新购物车商品数据
     * @param specIds
     * @return
     */
    public List<ShopcartVo> queryItemsBySpecIds(String specIds);

    /**
     * 根据规格id 查询规格对象
     * @param specId
     * @return
     */
    ItemsSpec queryItemSpecById(String specId);

    /**
     * 根据商品id获得主图url
     * @param itemId
     * @return
     */
    String queryItemMainImgById(String itemId);

    String getMainImgUrl(String itemId);

    /**
     * 扣除库存
     * @param specId
     * @param buyCounts
     */
    void decreaseItemSpecStock(String specId,int buyCounts);

}
